The present invention relates to techniques for enabling communication between web services in a network environment.
The web service provider market is one of the fastest growing segments of the software industry. Web service providers make enterprise applications, such as human resources administration, recruiting, travel and expense management, sales force automation, and so on, available to customers over the web on a subscription basis, or for free. These enterprise applications are fully managed and hosted by the web service providers, which results in significant cost savings for enterprises using the web services and eliminates many of the issues requiring individual enterprise application integration (EAI) solutions.
Some web service providers merely host and manage third-party packaged software for their customers (i.e., “managed hosters”). Others build new applications from the ground up to take advantage of the benefits and cost-savings of the web service provider model.
Client applications can locate the web services using a UDDI (Universal Description, Discovery, and Integration) service, which is based on XML (eXtended Markup Language) and SOAP (Single Object Access Protocol). XML is a markup language for documents containing structured information, that is, the information and an indication of its role, and is a common way to provide information over wide area networks, such as the Internet. SOAP is an XML-based protocol for exchanging information in a decentralized, distributed environment. SOAP can be used in combination with a variety of protocols, but its most frequent use is in conjunction with HTTP (Hyper Text Transfer Protocol). Web service providers can register contact addresses and descriptions of the provided web services in a UDDI directory, and prospective clients can use the UDDI directory as a “phone book for web services,” and look up web services that fit the clients' needs.
Web services are typically described in a Web Service Description Language (WSDL), which is an XML-based language format. WSDL enables separation of the description of the abstract functionality offered by a web service from concrete details of a service description, such as “where” and “how” the functionality is offered. WSDL describes web services starting with the messages that are exchanged between the web service provider and a requestor. The messages are first described abstractly and are then bound to a concrete network protocol and message format. A message consists of a collection of typed data items. A message exchange between the web service provider and the requestor is referred to as an operation. A collection of operations is a portType. Collections of portTypes are grouped and referred to as a service. A web service represents an implementation of a service and contains a collection of ports, where each port is an implementation of a portType, which includes all the concrete details the requestor needs in order to interact with the web service.
In many cases, a client may need to contact several web services to obtain information that is needed by the client for a particular purpose. For example, a client can send out a request for quote (RFQ) message to several web services to obtain quotes for a particular product or service that the client would like to obtain, and based on the results select the most affordable product or service supplier, or the supplier that offers the shortest delivery time, and so on. Another example is a client that sends a loan application to a risk assessment web service, which evaluates the application. Clients with a ‘low’ risk assessment are automatically accepted, whereas clients with a ‘medium’ or ‘high’ risk assessment are initially denied and asked to contact a second web service for further evaluation. The second web service returns a final result, such as ‘yes’ or ‘no’ to the client. In most cases where several web services are used to gather information, the client is responsible for coordinating the contacting of them, and making sure that the web services are addressed in a proper sequence, for example, as outlined in the above loan application example. A further complication is that the different web services may use different communication models, such as synchronous communication or asynchronous communication. The web services may also request different input values, such that the client must modify the request for each individual web service that is being contacted. Thus, it would be desirable to further automate processes in which the results from several web services are used.